package cn.iocoder.yudao.module.hs.service.qcorderdetail;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.hs.controller.admin.qcorderdetail.vo.*;
import cn.iocoder.yudao.module.hs.dal.dataobject.qcorderdetail.QcOrderDetailDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 质检单明细 Service 接口
 *
 * @author 航盛
 */
public interface QcOrderDetailService {

    /**
     * 创建质检单明细
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createQcOrderDetail(@Valid QcOrderDetailSaveReqVO createReqVO);

    /**
     * 更新质检单明细
     *
     * @param updateReqVO 更新信息
     */
    void updateQcOrderDetail(@Valid QcOrderDetailSaveReqVO updateReqVO);

    /**
     * 删除质检单明细
     *
     * @param id 编号
     */
    void deleteQcOrderDetail(Long id);

    /**
     * 获得质检单明细
     *
     * @param id 编号
     * @return 质检单明细
     */
    QcOrderDetailDO getQcOrderDetail(Long id);

    /**
     * 获得质检单明细分页
     *
     * @param pageReqVO 分页查询
     * @return 质检单明细分页
     */
    PageResult<QcOrderDetailDO> getQcOrderDetailPage(QcOrderDetailPageReqVO pageReqVO);

    /**
     * 根据物料编号获取质检明细
     * @param materialCode
     * @return
     */
    QcOrderDetailDO getQcOrderDetail(String materialCode);

    /**
     *
     * @param qcOrderId
     * @return
     */
    List<QcOrderDetailDO> getQcOrderDetailList(Long qcOrderId);

    /**
     * 获取指定质检结果的物料列表
     * @param materialCodeSet
     * @param qcResults
     * @return
     */
    List<QcOrderDetailDO> getQcOrderDetailList(Set<String> materialCodeSet, List<String> qcResults);

}